/*
 * @Author: chen haoxuan
 * @Date: 2021-05-11 08:58:42
 * @LastEditTime: 2021-05-11 09:18:02
 */
// 静态数据成员
// 如果希望各对象中的数据成员的值是一样的，就可以把它定义为静态数据成员，静态成员在内存中只占有一份空间
// (1)静态数据成员不属于某一个对象，在为对象分配空间时不包括静态数据成员所占的空间。静态数据成员实在所有对象之外单独开辟空间。只要在类中定义了静态数据成员，即使不定义对象，也可以引用
// (2)静态数据成员，不随对象的建立而分配空间，也不随对象的撤销而释放。静态数据成员在程序编译时被分配空间，程序结束时才释放空间
// (3)静态数据成员可以初始化，但只能在类体外进行初始化   
// 一般格式： 数据类型 类名::静态数据成员名 = 初值；                    
// eg： int Box::height=10;
// (4)静态数据成员既可以通过对象名引用，也可以通过类名引用
#include<iostream>
using namespace std;
class Box
{
    public:
        Box(int,int);
        int volume();
        static int height;
        int width;
        int length;
};
Box::Box(int w,int len)
{
    width=w;
    length=len;
}
int Box::volume()
{
    return (height*width*length);
}
int Box::height=10;
int main()
{
    Box a(15,20),b(20,30);
    cout<<a.height<<endl;
    cout<<b.height<<endl;
    cout<<Box::height<<endl;
    cout<<a.volume()<<endl;
    system("pause");
    return 0;
}